// RAP [bm]: animations ///******************************************************************************* // * Copyright (c) 2007 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // ******************************************************************************/ //package org.eclipse.ui.internal; // //import java.util.ArrayList; //import java.util.Iterator; //import java.util.List; // //import org.eclipse.jface.util.Geometry; //import org.eclipse.swt.SWT; //import org.eclipse.swt.events.PaintEvent; //import org.eclipse.swt.events.PaintListener; //import org.eclipse.swt.graphics.GC; //import org.eclipse.swt.graphics.Image; //import org.eclipse.swt.graphics.Rectangle; //import org.eclipse.swt.widgets.Canvas; //import org.eclipse.swt.widgets.Composite; //import org.eclipse.swt.widgets.Display; //import org.eclipse.swt.widgets.Shell; //import org.eclipse.ui.internal.AnimationEngine; // ///** // * Creates an animation effect where the interpolated rectangles are displayed using Canvas // * controls that show an image of the bits that were originally occupied by the various // * 'start' rectangles. // * // * @since 3.3 // * // */ //public class RectangleAnimationImageFeedback extends // RectangleAnimationFeedbackBase { // private class ImageCanvas extends Canvas { // private Image image; // // /** // * @param parent // * @param style // */ // public ImageCanvas(Composite parent, int style, Image image) { // super(parent, style); // this.image = image; // // addPaintListener(new PaintListener() { // public void paintControl(PaintEvent e) { // paintImage(e.gc); // } // }); // } // // /** // * @param gc // */ // protected void paintImage(GC gc) { // gc.drawImage(image, 0, 0, image.getBounds().width, image // .getBounds().height, 0, 0, getBounds().width, // getBounds().height); // } // // /* (non-Javadoc) // * @see org.eclipse.swt.widgets.Widget#dispose() // */ // public void dispose() { // super.dispose(); // image.dispose(); // } // } // // private Image backingStore; // private Shell theShell; // private Display display; // private List controls = new ArrayList(); // // // public RectangleAnimationImageFeedback(Shell parentShell, Rectangle start, // Rectangle end) { // super(parentShell, start, end); // } // // public void dispose() { // backingStore.dispose(); // for (Iterator ctrlIter = controls.iterator(); ctrlIter.hasNext();) { // ImageCanvas canvas = (ImageCanvas) ctrlIter.next(); // canvas.dispose(); // } // // theShell.setVisible(false); // theShell.dispose(); // } // // public void initialize(AnimationEngine engine) { // display = getAnimationShell().getDisplay(); // // Rectangle psRect = getAnimationShell().getBounds(); // theShell = new Shell(getAnimationShell(), SWT.NO_TRIM | SWT.ON_TOP); // theShell.setBounds(getAnimationShell().getBounds()); // // // Capture the background image // backingStore = new Image(theShell.getDisplay(), psRect); // GC gc = new GC(display); // gc.copyArea(backingStore, psRect.x, psRect.y); // gc.dispose(); //// changeCoordinates(); //// captureImages(); // theShell.setBackgroundImage(backingStore); // theShell.setVisible(true); // display.update(); // // } // // /* (non-Javadoc) // * @see org.eclipse.ui.internal.RectangleAnimationFeedbackBase#jobInit(org.eclipse.ui.internal.AnimationEngine) // */ // public boolean jobInit(AnimationEngine engine) { // changeCoordinates(); // captureImages(); // return super.jobInit(engine); // } // // public void addStartRect(Rectangle rect) { // if (rect == null) // return; // // // Rectangle start = Geometry.toControl(getAnimationShell(), rect); // super.addStartRect(rect); // // } // // public void addEndRect(Rectangle rect) { // if (rect != null) { // // Rectangle end = Geometry.toControl(getAnimationShell(), rect); // super.addEndRect(rect); // } // } // // public void renderStep(AnimationEngine engine) { // Iterator ctrlIter = controls.iterator(); // Iterator currentRects = getCurrentRects(engine.amount()).iterator(); // while (currentRects.hasNext()) { // ImageCanvas canvas = (ImageCanvas) ctrlIter.next(); // canvas.setBounds((Rectangle) currentRects.next()); // } // display.update(); // // } // // public void changeCoordinates() { // Iterator startRectIter = getStartRects().iterator(); // Iterator endRectIter = getEndRects().iterator(); // while (startRectIter.hasNext()) { // Rectangle startRect = (Rectangle) startRectIter.next(); // Rectangle mapStartRect = Geometry.toControl(theShell, startRect); // startRect.x = mapStartRect.x; // startRect.y = mapStartRect.y; // Rectangle endRect = (Rectangle) endRectIter.next(); // Rectangle mapEndRect = Geometry.toControl(theShell, endRect); // endRect.x = mapEndRect.x; // endRect.y = mapEndRect.y; // } // } // // private void captureImages() { // // for (Iterator iterator = getStartRects().iterator(); iterator.hasNext();) { // Rectangle rect = (Rectangle) iterator.next(); // Image image = new Image(display, rect.width, rect.height); // GC gc = new GC(backingStore); // gc.copyArea(image, rect.x, rect.y); // gc.dispose(); // ImageCanvas canvas = new ImageCanvas(theShell, SWT.BORDER // | SWT.NO_BACKGROUND, image); // controls.add(canvas); // // } // } // //}